function GetRandomStr(data)

    local numstr="1"
    for _,v in pairs(data) do
       -- print("***********")
        --print(v.min,v.max)
        if v.max==0 then
            numstr=numstr.."0"
        else
            numstr=numstr..tostring(math.random(v.min,v.max))
        end
    end

    return numstr
end

function GetRandomNumber(data)
    local digits=#data
    local str=GetRandomStr(data)
    str="1"..str
    local num=tonumber(str)
    return num-10^(digits-1)
end




function GetRandomBigNumber(num)
    if num<10000 then
        return math.random(0,num)
    end

    local numInt=math.floor(num) --去除小数点
    local numstr=tostring(numInt)

     local digit,first2Digit
    if string.find(numstr,"e+") then --如果已经达到科学计数
        local list=string.split(numstr,"e+") --切割
         digit=tonumber(list[2])+1--计算位数
         first2Digit=tostring(math.floor(list[1]*100)) --取前三位
    else
        digit=#numstr --获取位数
        first2Digit = string.sub(tostring(numstr), 1, 3)--获取前3位
    end


    local data={}
    local a1=string.sub(first2Digit, 1, 1) --第一位数
    local a2=string.sub(first2Digit, 2, 2)--第二位数
    local a3=string.sub(first2Digit, 3, 3) --第三位数

print("---------GetRandomBigNumber--------------->",a1,a2,a3)
     table.insert(data,{
        min=0,
        max=tonumber(a1),
     })

     table.insert(data,{
        min=0,
        max=tonumber(a2),
     })

     table.insert(data,{
        min=0,
        max=tonumber(a3),
     })

     for i=3,digit do
        table.insert(data,{
            min=0,
            max=9,
         })
     end

    return  GetRandomNumber(data)
end
for j=1,1 do
    local bigNum=math.random(1,9)
    for i=1,19 do
        bigNum=bigNum..math.random(0,9)
    end
    bigNum=tonumber(bigNum)

    print(j..":BigNum：",bigNum)
    print(j..":Random:",GetRandomBigNumber(bigNum))
end
